package com.quizh.euro.server;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Logger;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.quizh.euro.shared.Boleto;


public class Eurofetch {

	private final String euroUrl = "http://servicios.elpais.com/sorteos/widget.html?b=eu-";
	private static final Logger logger = Logger.getLogger(Eurofetch.class.getName());

	public Boleto parser() {
		Document doc;
		Boleto result = null;
		try {
			// need http protocol
			doc = Jsoup.connect(euroUrl).get();
			List<String> numeros = new ArrayList<String>(5);
			List<String> estrellas = new ArrayList<String>(2);
			SimpleDateFormat dateParser = new SimpleDateFormat("dd/M/yy");
			// get page title
			String title = doc.title();
			logger.fine("Getting doc with title " + title);

			// get all links
			Date time = null;
			
			try {
				Elements date = doc.select(".fecha");
				time = dateParser.parse(date.text().split(" ")[1]);
				logger.info("La fecha es "+time.toString());
			} catch (ParseException e) {
				logger.severe("Error parsing date.");
				time = new Date();
			}
			Elements elemResultados = doc.select(".resultados");
			Elements lista = elemResultados.select("ul");
			if (lista.size() != 2) {
				logger.severe("Error en el parseo. El numero de elementos es " + lista.size());
			} else {
				Iterator<Element> ti = lista.iterator();
				Element primerElemento = ti.next();
				Elements valoresElement = primerElemento.select("li");
				if (valoresElement.size() != 5) {
					System.out.println("Error en el parseo.");
				} else {
					for (Element numero : valoresElement) {
						numeros.add(String.valueOf(Integer.parseInt(numero.text())));
					}
					Element segundoElemento = ti.next();
					valoresElement = segundoElemento.select("li");
					if (valoresElement.size() != 2) {
						System.out.println("Error en el parseo.");
					} else {
						for (Element numero : valoresElement) {
							estrellas.add(String.valueOf(Integer.parseInt(numero.text())));
						}
					}

				}

			}
			logger.info(("Numeros " + Arrays.toString(numeros.toArray())));
			logger.info(("Estrellas "+ Arrays.toString(estrellas.toArray())));
			result = new Boleto();
			result.setDate(time.getTime());
			result.setEmail(Boleto.MASTER);
			result.setNum(numeros);
			result.setStar(estrellas);
		} catch (IOException e) {
			logger.severe("Error "+ e.getMessage());
			e.printStackTrace();
		}
		
		return result;
	}

	public static void main(String[] args) {
//		Eurofetch fetch = new Eurofetch();
//		fetch.parser();
		Date date = new Date(1379922817153L);
		System.out.println(date.toString());
	}
}
